package com.cskaoyan.javase.basic._1identifier;
/**
 * Java当中的标识符
 * 问题1：什么是标识符？
 * 上面我们提到过，编程的过程就是变量使用的过程。
 * 在这个使用变量的过程中，毫无疑问是需要知道变量的名字，才能更方便得去使用它。
 * 而在Java代码中，使用 标识符 表示各种各样的名字，也包括变量名。
 *
 *  问题2：标识符有什么用？
 * 上面已经说过了，标识符是一个表示名字的字符串。
 *
 * 问题3：需要标识符起名字的常见结构有哪些？
 * 主要有：
 *      1.类名（包括后面会学习的接口名、注解名等）
 *      2.方法名（main就是一个方法名）
 *      3.变量名
 *      4.包名
 *
 * 标识符的命名规范,语法要求:
 * (最基本的要求,不遵守不能通过编译)
 * 标识符的开头必须是：
 *      字母（A~Z 和 a~z）
 *      下划线（_）
 *      美元符号（$）
 *      Unicode 字符集中编号为0xC0以及它后面的所有符号(包括世界上绝大多数国家的语言字符,当然包括中文)
 *      0xC0是一个十六进制数
 *
 * 标识符的组成必须是：
 *      数字（0~9）
 *      字母（A~Z 和 a~z）
 *      美元符号（$）
 *      下划线（_）
 *      Unicode 字符集中编号为0xC0以及它后面的所有符号(包括世界上绝大多数国家的语言字符,当然包括中文)
 *
 * 几个注意事项：
 * 标识符不能以数字开头。
 * 不能是Java中的关键字和保留字。
 * 标识符严格区分大小写。
 *
 * 除了以上语法要求外,标识符的命名规范,还要遵循一套"约定俗成"的规范,更为重要
 * 当然,"约定俗成"的规范是在符合语法标准的基础上进行的.
 *
 * 标识符命名总体原则: 尽量使用合法的英文单词,不要使用拼音,更不要直接用汉字(当然如果只能用拼音的另说)
 * 标识符的命名两种常见的命名方式:
 *      1.小驼峰式命名法
 *           多个单词组合成一个字符串
 *           第一个单词的首字母小写 。
 *           从第二个单词开始，首字母都要大写。
 *           例如：myName，myFirstJavaProgram
 *           如果只有一个单词的话,那就直接小写,比如name,age
 *
 *      2.大驼峰式命名法
 *          多个单词组合成一个字符串
 *          第一个单词的首字母 大写 。
 *          从第二个单词开始，首字母都要大写
 *          例如：MyName，MyFirstJavaProgram
 *          如果只有一个单词的话,那就直接大写,比如Name,Age
 *
 * 具体来说:
 *      1.类名(接口名,注解名等) 遵循"大驼峰式"的命名规范
 *          比如Student,String,MyStudent,JavaStudent
 *      2.方法名,变量名都应该遵循"小驼峰式"的命名规范
 *          比如getMaxValue,name,age
 *      3.包名:
 *          1.多数公司开发的包名会以反转公司的域名作为开头。
 *          例如在百度做开发，项目的包名开头应该是com.baidu.xxx
 *          www.cskaoyan.com
 *          反转它
 *          com.cskaoyan
 *          2.包名的单词字母应该全部小写，禁止使用大写。
 *          3.多级包名用"."隔开。
 *          4.一级包名尽量就只有一个单词,如果有多个单词,建议分成两级包目录
 *          5.包名往往是一个名词,在命名时,要使用这个名词的单数形式
 *              不要使用复数形式
 *              比如一个工具包,就不要使用utils,而是要使用util
 *
 *          注意(约定):
 *              在上课时,为了方便大家更好的查看代码,记住学习知识点的顺序
 *              我会给包名加一个序号,用来区分
 *              为了符合语法规范,会用"_" + 数字来开头
 *
 *              这仅仅是为了方便查看代码,实际上是一种错误的命名规范
 *              请大家在实际代码中不要模仿
 *
 * 除开以上:
 * 标识符的命名开头和结尾都禁止使用下划线"_"和美元符号"$"。
 * 在java代码中,是很少去使用下划线和美元符号的,建议尽量不要使用它们
 *
 * 任何标识符的命名都禁止使用莫名其妙的字母组合、拼音或者拼音英文组合，更不能直接使用中文。
 * 特殊地如baidu、beijing或者和业务相关的拼音除外。
 *
 * 总之，标识符的命名尽量使用合法的、拼写准确的英文单词.
 * 核心的追求是"见名知意"。比如一个好的变量命名应该能够让人通过名字就知道，该变量的作用。
 *
 * 标识符的命名规范，可以从源码、大神的代码中学习，也是一个逐渐积累的过程。
 *
 * @since 15:07
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // Non-ASCII characters in an com.cskaoyan.javase.basic._1identifier.
        // 言下之意是说,推荐使用ASCII码表的字符作为标识符的命名
        int 长风;
        int Class;
        int 好きだ;
        // int DataClass#;
        // int _98.3;

        // 在计算机中,像空格,换行,制表等看起来什么都没有的,实际上也是一个字符
        // int Hello  World;
        // 下划线和美元符号不要作为开头或结尾,更不能单独使用
        // int _;

    }
}
// 学生类
class Student{}
